using System;
using System.Collections.Generic;
using System.ComponentModel;
using Microsoft.Ccr.Core;
using Microsoft.Dss.Core.Attributes;
using Microsoft.Dss.ServiceModel.Dssp;
using Microsoft.Dss.ServiceModel.DsspServiceBase;
using W3C.Soap;
using dssp = Microsoft.Dss.ServiceModel.Dssp;

namespace ExampleSRV1App
{
	public sealed class Contract
	{
		[DataMember]
		public const string Identifier = "http://schemas.gatech.edu/2010/09/examplesrv1app.html";
	}
	
	[DataContract]
	public class AForgeNetState
	{
	}

    [DataContract]
    public class InitControllerRequest
    {
    }
	
	[ServicePort]
	public class AForgeNetOperations : PortSet<DsspDefaultLookup, DsspDefaultDrop, Get, Subscribe, InitController>
	{
	}
	
	public class Get : Get<GetRequestType, PortSet<AForgeNetState, Fault>>
	{
		public Get()
		{
		}
		
		public Get(GetRequestType body)
			: base(body)
		{
		}
		
		public Get(GetRequestType body, PortSet<AForgeNetState, Fault> responsePort)
			: base(body, responsePort)
		{
		}
	}

    public class InitController : Submit<InitControllerRequest, DsspResponsePort<DefaultSubmitResponseType>>
    {
        public InitController()
            : base(new InitControllerRequest())
        {
        }
    }

    public class Subscribe : Subscribe<SubscribeRequestType, DsspResponsePort<SubscribeResponseType>, AForgeNetOperations>
    {
        public Subscribe()
        {
        }

        public Subscribe(SubscribeRequestType body)
            : base(body)
        {
        }
    }

    /// <summary>
    /// DSS Replace Definition for Srv1
    /// </summary>
    [DisplayName("ChangeState")]
    [Description("Changes or indicates a change for the SRV-1 brick.")]
    public class Replace : Replace<AForgeNetState, PortSet<dssp.DefaultReplaceResponseType, W3C.Soap.Fault>>
    {
    }
}


